package TCP;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Day06_Server类实现了简单的服务器端程序，用于与客户端进行数据通信。
 * 该程序会监听指定端口（8888），等待客户端连接，并在连接建立后进行双向数据传输。
 */
public class Day06_Server {

    public static void main(String[] args) {
        // 服务器端程序入口
        // 1) 创建服务器Socket并监听指定端口
        try {
            ServerSocket serverSocket =
                    new ServerSocket(8888);
            System.out.println("服务器架设成功！");

            // 2) 等待客户端连接
            Socket socket = serverSocket.accept();
            System.out.println("我是服务器，客户端已经连接成功！");

            // 3) 在循环中处理客户端请求
            while (true) {
                // 接收客户端发送的数据
                InputStream inputStream =
                        socket.getInputStream();
                InputStreamReader inputStreamReader =
                        new InputStreamReader(inputStream);
                BufferedReader bufferedReader =
                        new BufferedReader(inputStreamReader);
                String word = bufferedReader.readLine();

                // 打印接收到的数据
                System.out.println
                        ("我是服务器，客户端发送来的数据为：" + word);

                // 提示用户输入数据并读取
                System.out.print("请输入内容：");
                InputStream inputStream1 = System.in;
                InputStreamReader inputStreamReader1 =
                        new InputStreamReader(inputStream1);
                BufferedReader bufferedReader1 = new
                        BufferedReader(inputStreamReader1);
                String word1 = bufferedReader1.readLine();

                // 将数据发送给客户端
                OutputStream outputStream =
                        socket.getOutputStream();
                DataOutputStream dataOutputStream =
                        new DataOutputStream(outputStream);
                PrintWriter printWriter = new
                        PrintWriter(dataOutputStream, true);
                printWriter.println(word1);
            }
        } catch (IOException e) {
            // 异常处理
            e.printStackTrace();
        }
    }
}
